/*
**  Xbox360 USB Gamepad Userspace Driver
**  Copyright (C) 2008 Ingo Ruhnke <grumbel@gmail.com>
**
**  This program is free software: you can redistribute it and/or modify
**  it under the terms of the GNU General Public License as published by
**  the Free Software Foundation, either version 3 of the License, or
**  (at your option) any later version.
**
**  This program is distributed in the hope that it will be useful,
**  but WITHOUT ANY WARRANTY; without even the implied warranty of
**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**  GNU General Public License for more details.
**
**  You should have received a copy of the GNU General Public License
**  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef HEADER_EVDEV_HELPER_HPP
#define HEADER_EVDEV_HELPER_HPP

#include <string>

/**
 * 将字符串转换为事件类型和代码
 * 该函数根据输入的字符串名称，将对应的事件类型和代码通过引用参数返回
 * 主要用于解析事件名称字符串，以便在程序中以标准化的方式处理不同的输入事件
 * 
 * @param name 事件名称的字符串表示
 * @param type 事件类型，通过引用返回，如按键事件、绝对值事件等
 * @param code 事件代码，通过引用返回，具体含义依赖于事件类型
 * @return bool 表示转换是否成功，成功则为true，否则为false
 */
bool str2event(const std::string& name, int& type, int& code);

/**
 * 将按钮事件代码转换为字符串
 * 根据输入的按钮事件代码，返回其对应的字符串表示
 * 用于将按钮事件代码映射到人类可读的字符串，便于日志记录或界面显示
 * 
 * @param i 按钮事件代码
 * @return std::string 按钮事件的字符串表示
 */
std::string btn2str(int i);

/**
 * 将绝对值事件代码转换为字符串
 * 根据输入的绝对值事件代码，返回其对应的字符串表示
 * 用于将绝对值事件代码映射到人类可读的字符串，便于日志记录或界面显示
 * 
 * @param i 绝对值事件代码
 * @return std::string 绝对值事件的字符串表示
 */
std::string abs2str(int i);

/**
 * 将相对值事件代码转换为字符串
 * 根据输入的相对值事件代码，返回其对应的字符串表示
 * 用于将相对值事件代码映射到人类可读的字符串，便于日志记录或界面显示
 * 
 * @param i 相对值事件代码
 * @return std::string 相对值事件的字符串表示
 */
std::string rel2str(int i);

#endif

/* EOF */
